package com.qdxwx.data.service.course;

import com.qdxwx.common.page.PageRequest;
import com.qdxwx.models.course.CourseNode;
import com.qdxwx.models.course.CourseNodeDTO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * CourseNode接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
public interface CourseNodeService {

    /**
     * 添加CourseNode
     */
    int insert(CourseNode courseNode);
    
    /**
     * 通过课程ID，查询课程所属视频
     */
    List<CourseNode> getList(int courseId);

    /**
     * 修改视频节点
     */
    int update(CourseNode node);

    
    /**
     * 统计视频节点总数
     */
    int countVideo(int courseId);

    /**
     * 更新课程章节的播放数量
     */
    void updatePlayCount(int nodeId);

    /**
     * 获取一个正在直播的章节
     */
    CourseNode getLiving(int nodeId, LocalDateTime beginTime);
    /**
     * 首页查询直播课程
     */
    List<CourseNodeDTO> getNearestNodeList(CourseNode courseNode, int limit);

    List<CourseNode> getList(CourseNode courseNode, PageRequest page);

    int count(CourseNode courseNode);

    CourseNode get(int nodeId);

    int delete(int nodeId);

    int delete(CourseNode node);

    void deleteByCourseId(int courseId);

    List<CourseNode> getRoots(int courseId);

    List<CourseNode> getChildren(int parentId);

    /**
     * 查询知识点的基本信息树列表
     */
    List<CourseNode> getTreeByCourseId(int courseId);

    /**
     * 根据课程id查询章节总时长
     */
    int getDurationSum(int courseId);
}